Computing devices, such as personal computers, laptop computers, netbook computers and other types of computing devices, use operating systems to manage resources of the computing device and provide access to common services of the computing device. For example, an operating system may provide access to persistent storage devices, audio devices and video devices, among other system devices and system resources. Such operating systems are implemented using software that may include programs and data for carrying out the functions of the operating system. Two common components of computing device operating systems are an operating system kernel and a root filesystem (rootfs).
The kernel acts as a bridge between software applications (e.g., applications that are run by a user of the computing device and are not components of the operating system) and the actual data processing for those applications that is performed at the hardware level of the computing device (e.g., by a processor and/or other hardware components). The rootfs is the base filesystem for the computing device. The rootfs includes files that are used to boot (start up) a given computing device and to place the computing device in a state that allows additional filesystems to be loaded (mounted) on the rootfs. For purposes of this disclosure, the terms load and mount (and their variants) are used interchangeably. The particular elements of a computing system's kernel and rootfs will depend on the particular embodiment (e.g., the particular computing device and/or the particular operating system that is implemented).
In some embodiments, the kernel and rootfs for a computing device are included in a single partition (e.g., an operating system partition) of a storage device of the computing device. In such an approach, identifying information for the operating system partition is included in an entry of a corresponding partition table of the storage device that contains the operating system partition. In other embodiments, a kernel may be included in a first partition (e.g., a kernel partition), while a corresponding rootfs may be included in a second partition (e.g., a rootfs partition). In such embodiments, a partition table entry for the kernel partition is followed immediately (in a corresponding partition table) by a partition table entry for the rootfs partition that is associated with the kernel partition. These approaches have limited flexibility as kernels and root filesystems (rootfses) are necessarily linked in one-to-one relationships.